<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"  
    xmlns:h="http://java.sun.com/jsf/html"  
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    template="/plantillas/plantilla-sistema.xhtml"> 
    <f:metadata>
        <f:event type="preRenderView" 
                 listener="#{municipioBean.validarAcceso}"/>
    </f:metadata>
    <ui:define name="cabecera">
        <title>Gestión de Municipio</title>
        <link rel="shortcut icon"  
              href="/resources/imagenes/favicon.ico" />      
    </ui:define>
    <!-- Tabla de Municipio -->
    <ui:define name="contenido">
        
        <p:growl id="growl" showDetail="true" sticky="true" /> 
        
        <center>
            <p:panel id="municipioPnl" 
                    header="Listado de Municipios" 
                    styleClass="contenido">
            <h:form id="tablaMunicipioFrm">
                <p:dataTable id="tablaMunicipioDtb" 
                                var="municipio" 
                                value="#{municipioBean.listaEntidades}"
                                rowKey="#{municipio.codigomunicipio}"
                                resizableColumns="true"
                                selectionMode="single"
                                paginator="true" 
                                paginatorPosition="bottom" 
                                rows="10"
                                emptyMessage="No hay registros disponibles.">
                        <p:column headerText="Departamento" 
                                filterBy="#{municipio.departamento.nombre}" 
                                filterMatchMode="contains"
                                sortBy="#{municipio.departamento.nombre}"
                                styleClass="columna">
                        <h:outputText value="#{municipio.departamento.nombre}"/>
                    </p:column>
                    <p:column headerText="Municipio" 
                                filterBy="#{municipio.nombre}" 
                                sortBy="#{municipio.nombre}"
                                filterMatchMode="contains"
                                styleClass="columna">
                        <h:outputText value="#{municipio.nombre}" />
                    </p:column>
                    <p:column headerText="Latitud" 
                                filterBy="#{municipio.latitud}" 
                                filterMatchMode="contains"
                                styleClass="columna">
                        <h:outputText value="#{municipio.latitud}"
                                      converter="coordenadaConverter">
                            <f:attribute name="tipo" value="latitud" />
                        </h:outputText>
                    </p:column>
                    <p:column headerText="Longitud" 
                                filterBy="#{municipio.longitud}" 
                                filterMatchMode="contains"
                                styleClass="columna">
                        <h:outputText value="#{municipio.longitud}" 
                                      converter="coordenadaConverter">
                            <f:attribute name="tipo" value="longitud" />
                        </h:outputText>
                    </p:column>
                        <p:column headerText="Cabecera Departamental" 
                                filterBy="#{municipio.cabecera  == 'True' 
                                            ? 'Si' : 'No'}" 
                                filterMatchMode="contains"
                                styleClass="columna">
                            <h:outputText value="#{municipio.cabecera == 'True' 
                                                   ? 'Si' : 'No'}"/>
                    </p:column>
                    <p:column headerText="Modificar"
                              style="font-size: 110%"
                              rendered="#{sesionBean.verificarPermiso('modificar','municipio')}">
                        <center>
                        <p:commandButton 
                            id="modificarBtn" 
                            title="Modificar" 
                            icon="ui-icon-pencil"
                            actionListener="#{municipioBean.prepararModificacion(municipio)}" 
                            update=":guardarMunicipioFrm:guardarMunicipioPnl" 
                            oncomplete="guardarMunicipioWgt.show()">
                                <f:setPropertyActionListener 
                                    target="#{municipioBean.operacionActual}"
                                    value="ACTUALIZACION" />
                        </p:commandButton>
                        </center>                   
                    </p:column>
                    <p:column headerText="Eliminar"
                              style="font-size: 110%"
                              rendered="#{sesionBean.verificarPermiso('eliminar','municipio')}">
                            <center>
                                <p:commandButton 
                                    id="eliminarBtn"
                                    title="Eliminar" 
                                    actionListener="#{municipioBean.prepararEliminacion(municipio)}"
                                    icon="ui-icon-trash"
                                    update="@form" 
                                    oncomplete="confirmacionWgt.show()">
                                    <f:setPropertyActionListener 
                                        target="#{municipioBean.operacionActual}" 
                                        value="ELIMINACION" />
                                </p:commandButton>
                            </center>
                    </p:column>
                        <f:facet name="footer">
                            <p:commandButton 
                                id="agregarBtn" 
                                value="Nuevo Municipio" 
                                actionListener="#{municipioBean.prepararAdicion}" 
                                update=":guardarMunicipioFrm:guardarMunicipioPnl" 
                                oncomplete="guardarMunicipioWgt.show()"
                                title="Agregar nuevo municipio" 
                                icon="ui-icon-document"
                                style="float:left; font-size:110%"
                                rendered="#{sesionBean.verificarPermiso('agregar','municipio')}">
                                <f:setPropertyActionListener 
                                    target="#{municipioBean.operacionActual}"
                                    value="INSERCION" />
                            </p:commandButton>              
                    </f:facet>
                </p:dataTable>
            </h:form>
            </p:panel>
        </center>
    </ui:define>  
    <ui:define name="extra">
        <!-- Agregar/Modificar Municipio -->
          <p:dialog id="guardarMunicipioDlg" 
                  widgetVar="guardarMunicipioWgt" 
                  resizable="false"
                  modal="true"
                  showEffect="false"
                  header="Gestión de Municipio" 
                  closable="false"
                  draggable="false"
                  style="font-size: 85%">
              <h:form id="guardarMunicipioFrm">
                <p:messages id="mensajesMsg" globalOnly="true" />
                <h:panelGrid id="guardarMunicipioPnl" 
                             columns="3" 
                             style="margin-bottom:10px; font-size: 85%">
                    <h:outputLabel for="nombredepartamentoSom" 
                                   value="Nombre del departamento:" />
                    <p:selectOneMenu id="nombredepartamentoSom" 
                                     rendered="#{municipioBean.operacionActual == 'INSERCION'}"
                                     value="#{municipioBean.entidad.departamento}" 
                                     required="true"
                                     filter="true"
                                     filterMatchMode="contains">
                        <f:selectItem itemLabel="Seleccione..." itemValue="" />
                        <f:selectItems value="#{municipioBean.itemsDepartamentos}"/>
                        <f:converter converterId="departamentoConverter" />
                    </p:selectOneMenu>
                    <p:outputLabel for="nombredepartamentoSom" 
                                   value="#{municipioBean.entidad.departamento.nombre}" 
                                   rendered="#{municipioBean.operacionActual == 'ACTUALIZACION'}"/>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip for="nombredepartamentoSom" 
                                    showEvent="focus" 
                                    hideEvent="blur" 
                                    rendered="#{municipioBean.tieneErrores('guardarMunicipioFrm:nombredepartamentoSom')}">
                                    <p:message id="nombredepartamentoMsg" 
                                               for="nombredepartamentoSom"
                                               display="text" />
                          </p:tooltip>
                     </p:panel>
                     <h:outputLabel for="nombremunicipioTxt" 
                                    value="Nombre del municipio:" />
                     <p:inputText id="nombremunicipioTxt" 
                                  value="#{municipioBean.entidad.nombre}">
                                 <f:attribute name="regex" 
                                              value="#{regex.textoobligatorio}" />
                                 <f:attribute name="formato" 
                                              value="Solo Caracteres" />
                                 <f:validator validatorId="regexValidator" />
                   </p:inputText>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip for="nombremunicipioTxt" 
                                    showEvent="focus" 
                                    hideEvent="blur" 
                                    rendered="#{municipioBean.tieneErrores('guardarMunicipioFrm:nombremunicipioTxt')}">
                                    <p:message id="nombremunicipioMsg" 
                                               for="nombremunicipioTxt"
                                               display="text" />
                          </p:tooltip>
                   </p:panel>   
                    <h:outputLabel for="latitudTxt" 
                                   value="Latitud del municipio:" />  
                    <p:inputMask id="latitudTxt" 
                                 value="#{municipioBean.entidad.latitud}"
                                 mask="99?º99?\'99.9?\'\'a">
                                 <f:converter converterId="coordenadaConverter" />
                                 <f:attribute name="tipo" value="latitud" />
                   </p:inputMask>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip for="latitudTxt" 
                                    showEvent="focus" 
                                    hideEvent="blur" 
                                    rendered="#{municipioBean.tieneErrores('guardarMunicipioFrm:latitudTxt')}">
                                    <p:message id="latitudMsg" 
                                               for="latitudTxt"
                                               display="text" />
                          </p:tooltip>
                   </p:panel> 
                    <h:outputLabel for="longitudTxt" 
                                   value="Longitud del municipio:" />  
                    <p:inputMask id="longitudTxt" 
                                 value="#{municipioBean.entidad.longitud}"
                                 mask="99?º99?\'99.9?\'\'a">
                                 <f:converter converterId="coordenadaConverter" />
                                 <f:attribute name="tipo" value="longitud" />
                   </p:inputMask>
                   <p:panel style="border:none; font-size: 85%">
                         <p:tooltip for="longitudTxt" 
                                    showEvent="focus" 
                                    hideEvent="blur" 
                                    rendered="#{municipioBean.tieneErrores('guardarMunicipioFrm:longitudTxt')}">
                                    <p:message id="longitudMsg" 
                                               for="longitudTxt"
                                               display="text" />
                          </p:tooltip>
                   </p:panel> 
                     <h:outputLabel for="cabeceraTxt" 
                                    value="Cabecera departamental:" />
                     <p:selectBooleanCheckbox 
                         id="cabeceraTxt" 
                         value="#{municipioBean.entidad.cabecera}"/>
                     <br/><br/>                    
                </h:panelGrid>
                  <p:separator />
                  <br/>
                  <p:commandButton 
                      id="guardarBtn" 
                      actionListener="#{municipioBean.guardarEntidad}" 
                      oncomplete="if ( !args.validationFailed ) 
                         guardarMunicipioWgt.hide()" 
                      update="@form,:tablaMunicipioFrm:tablaMunicipioDtb" 
                      value="Guardar" 
                      icon="ui-icon-disk" 
                      style="float:right; font-size: 85%"
                      title="Guardar"/>                    
                    <p:commandButton 
                        value="Cancelar" 
                        onclick="guardarMunicpioWgt.hide()"
                        icon="ui-icon-cancel" 
                        title="Cancelar"
                        actionListener="#{municipioBean.revertirCambios}"
                        immediate="true"
                        style="float:right; font-size: 85%"/>
              </h:form>    
           </p:dialog>
       <!-- Diálogo de confirmación de eliminación -->
        <p:confirmDialog 
            id="confirmacionDlg" 
            message="¿Está seguro que desea eliminar el registro?" 
            header="Confirmación" 
            widgetVar="confirmacionWgt" 
            severity="alert"
            width="300"
            closable="false"
            style="font-size: 85%">    
            <h:form>
            <p:messages 
             id="mensajesMsg" 
             globalOnly="true" />
                    <p:commandButton 
                        value="Eliminar"
                        actionListener="#{municipioBean.eliminarEntidad}"
                        icon="ui-icon-trash" 
                        style="float:right; font-size: 85%"
                        update="@form,:tablaMunicipioFrm:tablaMunicipioDtb"
                        oncomplete="if ( !args.validationFailed ) confirmacionWgt.hide()"/>
                    <p:commandButton 
                        value="Cancelar"
                        update="@form"
                        oncomplete="confirmacionWgt.hide()" 
                        icon="ui-icon-cancel" 
                        style="float:right; font-size: 85%">
                        <f:setPropertyActionListener 
                            target="#{municipioBean.operacionActual}" 
                            value="NINGUNA" />
                    </p:commandButton>
            </h:form>
        </p:confirmDialog>
    </ui:define>
</ui:composition>

